/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.haipv.gtkhoa501.model;

/**
 *
 * @author PHANHAI
 * Mã hóa phương án lựa chọn
 */
public class AnswerCode {
    
     /**
      * Chọn phương án 1.
      */
      public static final int CODE_1 = 1;
      
      /**
       * Chọn phương án 2.
       */
      public static final int CODE_2 = 2;
      
      /**
       * Chọn phương án 1 và 2.
       */
      public static final int CODE_1_2 = 3;
      
      /**
       * Chọn phương án 3.
       */
      public static final int CODE_3 = 4;
      
      /**
       * Chọn phương án 1 và 3.
       */
      public static final int CODE_1_3 = 5;
      
      /**
       * Chọn phương án 2 và 3.
       */
      public static final int CODE_2_3 = 6;
      
      /**
       * Chọn phương án 1, 2 và 3.
       */
      public static final int CODE_1_2_3 = 7;
      
      /**
       * Chọn phương án 4.
       */
      public static final int CODE_4 = 8;
      
      /**
       * Chọn phương án 1 và 4.
       */
      public static final int CODE_1_4 = 9;
      
      /**
       * Chọn phương án 3 và 4.
       */
      public static final int CODE_3_4 = 12;
      
      /**
     * Kiểm tra xem lựa chọn nào là đáp án đúng
     * @param code Mã đáp án đúng của câu hỏi
     * @param option Lựa chọn cần kiểm tra đáp án
     * @return 
     */
    public static boolean checkAnswer(int code, int option) {
        boolean ok = false;
        switch (code) {
            case AnswerCode.CODE_1:
                ok = (option == 1) ? true : false;
                break;
            case AnswerCode.CODE_1_2:
                ok = (option == 1 || option == 2) ? true : false;
                break;
            case AnswerCode.CODE_1_2_3:
                ok = (option == 1 || option == 2 || option == 3) ? true : false;
                break;
            case AnswerCode.CODE_1_3:
                ok = (option == 1 || option == 3) ? true : false;
                break;
            case AnswerCode.CODE_1_4:
                ok = (option == 1 || option == 4) ? true : false;
                break;
            case AnswerCode.CODE_2:
                ok = (option == 2) ? true : false;
                break;
            case AnswerCode.CODE_2_3:
                ok = (option == 2 || option == 3) ? true : false;
                break;
            case AnswerCode.CODE_3:
                ok = (option == 3) ? true : false;
                break;
            case AnswerCode.CODE_3_4:
                ok = (option == 3 || option == 4) ? true : false;
                break;
            case AnswerCode.CODE_4:
                ok = (option == 4) ? true : false;
                break;
        }
        return ok;
    }
    
    /**
     * Lấy mã đáp án đã lựa chọn.
     * @param opt1
     * @param opt2
     * @param opt3
     * @param opt4
     * @return 
     */
    public static int getCode(boolean opt1, boolean opt2, boolean opt3, boolean opt4) {
        if(opt1 && !opt2 && !opt3 && !opt4) {
            return CODE_1;
        }
        if(opt1 && opt2 && !opt3 && !opt4) {
            return CODE_1_2;
        }
        if(opt1 && opt2 && opt3 && !opt4) {
            return CODE_1_2_3;
        }
        if(opt1 && opt2 && opt3 && !opt4) {
            return CODE_1_2_3;
        }
        if(!opt1 && opt2 && !opt3 && !opt4) {
            return CODE_2;
        }
        if(!opt1 && opt2 && opt3 && !opt4) {
            return CODE_2_3;
        }
        if(!opt1 && !opt2 && opt3 && !opt4) {
            return CODE_3;
        }
        if(!opt1 && !opt2 && opt3 && opt4) {
            return CODE_3_4;
        }
        if(opt1 && !opt2 && !opt3 && opt4) {
            return CODE_1_4;
        }
        if(!opt1 && !opt2 && !opt3 && opt4) {
            return CODE_4;
        }
        return 0;
    }
}
